草庐IT

Android AsyncTask 内存泄漏

全部标签

c++ - 在 C++ 中声明指向结构的指针会自动为其成员分配内存。我错了吗?

我编写了以下代码,我相信如果我试图访问我什至没有为其分配内存的结构的成员,它就会崩溃。但我很惊讶C++自动为结构分配内存。这是正常行为吗?相比之下,如果您声明一个指向对象的指针,然后尝试访问任何成员而没有使用运算符“new”实际创建对象,程序就会崩溃。我只是好奇为什么它会起作用,而我认为它不应该起作用。这是我的程序:#includestructProduto{intcodigo;floatpreco;};intmain(){structProduto*sabonete;sabonete->codigo=654321;sabonete->preco=0.85;printf("Codigo

c++ - 重新分配 C++ 数组的内存。

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowdoyoureallocinC++?我知道如果内存已通过malloc()或calloc()realloc()重新分配(扩展)C++数组。我的问题是,如何扩展C++中的数组,其内存已通过new运算符分配?

c++ - Vector.erase(Iterator) 导致错误的内存访问

我正在尝试对存储在vector中的videoObjects进行Z-Index重新排序。计划是识别将要放在vector第一个位置的videoObject,将其删除,然后将其插入到第一个位置。不幸的是,erase()函数总是导致错误的内存访问。这是我的代码:测试应用.h:vectorvideoObjects;vector::iteratoritVid;测试应用.cpp://GetthevideoObjectwhichrelatestotheusereventfor(itVid=videoObjects.begin();itVid!=videoObjects.end();++itVid){i

c++ - C++构造函数分配内存失败怎么办?

我刚遇到一个问题,类的构造函数需要分配内存。于是开心地写了char*mem=static_cast(malloc(100*sizeof(*mem)));.但后来我突然意识到,如果出现错误,我无法返回错误代码(我没有在我的代码中使用异常)。我该如何解决这个问题?我应该添加一个boolinitialized吗?成员,然后在完成我的类(class)之后,然后立即检查它,如:myClassmc;if(!mc.initialized){printf("Memoryallocationfailedinmc'sconstructor\n");exit(1);}谢谢,BodaCydo。

大型数组的 C# 内存优化

下面是用c++和c#编写的两个代码部分,它们做的事情完全相同:C++http://ideone.com/UfL5R#includeintmain(intargc,char*argv[]){charp[1000000];unsignedinti,j;unsignedlonglongs=0;for(i=2;i时间:0.01s内存:2576kBC#http://ideone.com/baXYmusingSystem;namespaceConsoleApplication4{internalclassProgram{privatestaticvoidMain(string[]args){var

c++ - std::vector 如何支持未知大小的自定义对象的连续内存

我正在为正确的心智模型和对std::vector的理解而苦苦挣扎。我以为我知道的当您创建一个类型为T的vector,然后为该vector保留N个元素时,编译器基本上会找到并保留一个连续的内存块,即N*sizeof(T)字节。例如,//Initializeavectorofintstd::vectorintvec;//Reservecontigiousblockof44-bytechunksofmemoryintvec.reserve(4);//[|||]//Fillinginthememorychunkshasobviousbehavior:intvec.push_back(1);//

C++ 初始化列表和内存分配

以下是否有效?classmyClass{private:...intm_nDataLength;boost::shared_arraym_pData;...public:myClass():...,m_nDataLength(10),m_pData(newint[m_nDataLength]),...{}}我假设初始化将完全按照我在ctor中给出的顺序进行,这是否正确?如果不是,如果m_nDataLength的初始化发生在m_pData之后怎么办? 最佳答案 虽然您的示例中的初始化确实按照您希望的顺序进行,但这并不是您假设的原因:初

c++ - 堆栈溢出——静态内存与动态内存

如果你写intm[1000000];在C/C++的main函数中,会出现堆栈溢出的运行时错误。相反,如果你写vectorm;然后在那里push_back1000000个元素,它将运行良好。我很好奇为什么会这样。它们都是本地内存,不是吗?提前致谢。 最佳答案 是的,vector本身是一个自动(堆栈)对象。但是vector持有一个指向其内容的指针(一个内部动态数组),它将被分配到堆上(默认情况下)。为了简化一点,您可以将vector视为在内部执行malloc/realloc或new[]调用(实际上它使用了一个allocator)。编辑:

c++ - 字符串导致内存泄漏?

VisualC++在我的代码中发现了内存泄漏,所以我将它精简为尽可能简单的测试用例并得到了这个:#define_CRTDBG_MAP_ALLOC//required#include//toenableMSVC++#include//memoryleakdetection#includeusingnamespacestd;intmain(){stringfoo;_CrtDumpMemoryLeaks();return0;}输出:Detectedmemoryleaks!Dumpingobjects->{130}normalblockat0x008748A8,8byteslong.Data:

c++为什么在将字符串文字传递给函数时分配内存?

我有他的密码:intsetAttrib(conststring&name,intcomponents){//hereIdon'teventouch'name'if(components==2)return3;elsereturn1;}我这样调用这个函数:setAttrib("position",3);我正在使用xcode分析器分析内存,并在函数调用std::string中进行分配。这是为什么?编辑:避免分配的最佳方法是什么?因为我调用该函数很多,所以在大约10秒的时间内,我最终在该行中分配了大约10MB。谢谢。 最佳答案 您请求一个